#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

// 系统调用函数open, write, ....
int main()
{
    umask(0);
    // int fd = open("log.txt", O_WRONLY|O_CREAT, 0666);
    // 覆盖写入——fopen, w
    // int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // 追加写入——fopen, a
    int fd = open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    if(fd < 0){
        printf("open fail error\n");
        return 1;
    }
    const char* message = "hello Linux_file\n";
    write(fd, message, strlen(message));
    
    close(fd);
    return 0;
}


// // bit位级别的标志位传递方式
// #define ONE (1<<0)      // 1
// #define TWO (1<<1)      // 2
// #define THREE (1<<2)    // 4
// #define FOUR (1<<3)     // 8
// 
// void show(int flags)
// {
//     if(flags&ONE) printf("hello function 1\n");
//     if(flags&TWO) printf("hello function 2\n");
//     if(flags&THREE) printf("hello function 3\n");
//     if(flags&FOUR) printf("hello function 4\n");
// }
// 
// int main()
// {
//     show(ONE);
//     printf("===========================\n");
//     show(TWO);
//     printf("===========================\n");
//     show(THREE);
//     printf("===========================\n");
//     show(FOUR);
//     printf("===========================\n");
//     show(ONE|THREE);
//     printf("===========================\n");
//     show(TWO|THREE|FOUR);
//     printf("===========================\n");
// 
//     return 0;
// }


// int main()
// {
//     // printf("pid: %d\n",getpid());
//     // sleep(10);
//     // chdir("/home/alin/Linux_2024/2024-12_Linux-study");
//     // printf("aaa\n"); 
//     // sleep(100);
//     FILE* fp = fopen("log.txt","w");
//     if(fp==NULL){
//         perror("fopen fail");
//         return 1;
//     }
//     
//     const char* message = "hello Linux file\n";
//     //  fwrite(message, strlen(message),1,fp);
//     // fwrite(message, strlen(message), 1, stdout);
//     fprintf(fp, "%s a = %d\n",message,1034);
// 
//     fclose(fp);
//     return 0;
// }
